flag_features: Vec<String>,
flag_all_features: bool,
flag_no_default_features: bool,
+ flag_avoid_dev_deps: bool,
flag_target: Option<String>,
flag_manifest_path: Option<String>,
flag_verbose: u32,
--features FEATURES Space-separated list of features to also build
--all-features Build all available features
--no-default-features Do not build the `default` feature
+ --avoid-dev-deps Avoid installing dev-dependencies if possible
--target TRIPLE Build for the target triple
--manifest-path PATH Path to the manifest to compile
-v, --verbose ... Use verbose output (-vv very verbose/build.rs output)
&options.flag_z)?;
let root = find_root_manifest_for_wd(options.flag_manifest_path, config.cwd())?;
- let ws = Workspace::new(&root, config)?;
+ let mut ws = Workspace::new(&root, config)?;
+ if options.flag_avoid_dev_deps {
+ ws.set_require_optional_deps(false);
+ }
let spec = Packages::from_flags(options.flag_all,
&options.flag_exclude,
self.require_optional_deps
}
+ pub fn set_require_optional_deps<'a>(&'a mut self, require_optional_deps: bool) -> &mut Workspace<'cfg> {
+ self.require_optional_deps = require_optional_deps;
+ self
+ }
+
/// Finds the root of a workspace for the crate whose manifest is located
/// at `manifest_path`.
///
let specs = spec.into_package_id_specs(ws)?;
let features = Method::split_features(features);
let method = Method::Required {
- dev_deps: filter.need_dev_deps(),
+ dev_deps: ws.require_optional_deps() || filter.need_dev_deps(),
features: &features,
all_features,
uses_default_features: !no_default_features,
let ws = match overidden_target_dir {
Some(dir) => Workspace::ephemeral(pkg, config, Some(dir), false)?,
- None => Workspace::new(pkg.manifest_path(), config)?,
+ None => {
+ let mut ws = Workspace::new(pkg.manifest_path(), config)?;
+ ws.set_require_optional_deps(false);
+ ws
+ }
};
let pkg = ws.current()?;